package file;

import java.io.*;
import java.util.Scanner;

/**
 * 文件复制
 */
public class FileCopyDemo {
    public static void main(String[] args) {
        //1. 先输入需要复制的文件路径
        //2. 输入目标文件路径
        //3. 进行文件的复制(读一个文件, 写到另一个文件里)
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入源文件路径:");
        String inputPath = scanner.nextLine();

        System.out.println("请输入目标文件路径:");
        String outPath = scanner.nextLine();
        //校验源文件是否存在
        File inputFile = new File(inputPath);
        if (!inputFile.isFile()){
            System.out.println("请输入正确的文件路径!!");
            return;
        }
        File outFile = new File(outPath);
        //不需要考虑目标文件不存在, 不存在会自动创建
        //不考虑目标文件目录不存在的情况
        copy(inputFile,outFile);

    }

    private static void copy(File inputFile, File outFile) {
        try(InputStream inputStream = new FileInputStream(inputFile)){
            try(OutputStream outputStream = new FileOutputStream(outFile)){
                //读文件
                while (true){
                    byte[] buf = new byte[1024];
                    int len = inputStream.read(buf);
                    if (len == -1){
                        //文件读完了
                        break;
                    }
                    //把读取的数据, 写到outputStream里面
                    //切记, 不能把数组中的所有内容写到outputstream里面
                    outputStream.write(buf,0,len);
                    outputStream.flush();
                }

            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
